extract messy data from text